package com.zxjbyte.yiyi.framework.web.context;

/**
 *
 * 加解密模式公共接口
 * @Author zhangxingjia
 * @Date 2025/11/1 22:45
 * @Version: 1.0
 */
public interface CryptoMode {

    // 模式代码常量
    String CODE_NONE = "NONE";
    String CODE_REQUEST_ONLY = "REQUEST_ONLY";
    String CODE_RESPONSE_ONLY = "RESPONSE_ONLY";
    String CODE_ALL = "ALL";

    /**
     * 获取模式代码
     */
    String getCode();

    /**
     * 获取模式描述
     */
    String getDescription();


    /**
     * 是否开启请求解密
     * 默认实现，子类可以覆盖
     */
    default boolean isRequestDecryptEnabled() {
        String code = getCode();
        return CODE_REQUEST_ONLY.equals(code) || CODE_ALL.equals(code);
    }

    /**
     * 是否开启响应加密
     * 默认实现，子类可以覆盖
     */
    default boolean isResponseEncryptEnabled() {
        String code = getCode();
        return CODE_RESPONSE_ONLY.equals(code) || CODE_ALL.equals(code);
    }

    /**
     * 是否启用加解密功能
     * 默认实现，子类可以覆盖
     */
    default boolean isCryptoEnabled() {
        String code = getCode();
        return !CODE_NONE.equals(code);
    }
}
